package com.example.iniciando;



import java.util.List;
import java.util.Random;

import android.net.Uri;
import android.os.Bundle;
import android.provider.ContactsContract.CommonDataKinds.Phone;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.EditText;


public class MainActivity extends Activity {

	public final static String EXTRA_MESSAGE = "com.example.iniciando.MESSAGE";
	static final int PICK_CONTACT_REQUEST = 1; //Request Code
	
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        
        
    }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return super.onCreateOptionsMenu(menu);
    }
    
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
    	switch (item.getItemId()) {
		case R.id.action_search:
			
			return true;
			
		case R.id.action_settings:
			
			return true;
		default:
			return super.onOptionsItemSelected(item);
		}
    }
    
    public void sendMessage(View view){
    	
    	Intent i = new Intent(this, DisplayMessageActivity.class );
    	
    	//Sempre que utilizar uma intent, eh importante chegar se existe app que 
    	//possa responder
    	//Caso envie a intent e nao haja app para responder, a aplicaçao pode quebrar
    	
    	/*
    	 * Em alguns momentos, é preciso mostrar o dialogo de varios apps 
    	 * que respondem a intent. Esse é um recurso padrao do android quando existem
    	 * varios apps, mas o usuário pode escolher um padrao e nao aparecer mais.
    	 * 
    	 * Então, para forçar o usuário a escolher sempre um app, como no momento de
    	 * compartilhar algo, faz o código abaixo
    	 * 
    	 * Intent i = new Intent(...);
    	 * 
    	 * Intent chooser = Intent.createChooser(i, titulo);
    	 * 
    	 * verificar se há pelo menos uma atividade para responder a intent
    	 * if(intent.resolveActivity(getPackageManager() != null))
    	 * 		startActivity(chooser);
    	 */
    	
    	PackageManager pack = getPackageManager();
    	List<ResolveInfo> activities = pack.queryIntentActivities(i, 0);
    	if(activities.size() > 0){
    	
	    	EditText editText = (EditText) findViewById(R.id.edit_message);
	    	String message = editText.getText().toString();
	    	i.putExtra(EXTRA_MESSAGE, message);
	    	startActivity(i);
    	}
    	
    }
    
    public void salvarArqArbitrario(View view){
    	
    }
    
    public void salvarSharedPreferences(View view){
    	
    	SharedPreferences shared = getPreferences(Context.MODE_PRIVATE);
    	SharedPreferences.Editor editor = shared.edit();
    	
    	
    	
    	editor.putInt(getString(R.string.saved_high_score), new Random().nextInt(100));
    	editor.commit();
    	((EditText) findViewById(R.id.edit_message)).setText("Salvo Shared");
    }
    
    public void recuperarShared(View view){
    	
    	SharedPreferences shared = getPreferences(Context.MODE_PRIVATE);
    	int valor = shared.getInt(getString(R.string.saved_high_score), 1);
    	((EditText) findViewById(R.id.edit_message)).setText("Valor salvo: " + Integer.toString(valor));
    	
    }
    
    public void ligar(View view){
    	
    	Uri numero = Uri.parse("tel:99717060");
    	Intent call = new Intent(Intent.ACTION_DIAL, numero);
    	startActivity(call);
    	
    }
    
    public void map(View view){
    	
    	Uri localizacao = Uri.parse("geo:-3.8825229,-38.4741211?z=6");
    	Intent map = new Intent(Intent.ACTION_VIEW, localizacao);
    	startActivity(map);
    }
    
    public void sendIntentResult(View view){
    	
    	Intent i = new Intent(Intent.ACTION_PICK, Uri.parse("content://contacts"));
    	i.setType(Phone.CONTENT_TYPE);
    	startActivityForResult(i, PICK_CONTACT_REQUEST);
    	//O request code é importante para identificar a requisição feita, pois
    	//a activity retornara a resposta com o mesmo request code
    	
    }
    
    @Override
    //Callback da activity que retornou uma resposta a uma intent passada
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    	
    	if(requestCode == PICK_CONTACT_REQUEST){
    		
    		if(resultCode == RESULT_OK){ //Result_ok ou Result_canceled
    		
    			
    		}
    	}
    	
    }
    
    
    
}
